YS電子工作ラボ

<V.3版>
DMA式 WAVプレーヤー

(→プロジェクトファイル(Harmony Ver.3版 MHC v3.8.0) ダウンロード)


 ここで紹介するWAVプレーヤは、SDカードの中にあるWAVファイルのサウンドデータをPIC32MZのRAMにSPIで読込み、 このデータを 44.1KHz毎に別のSPIバッファに書き込んで、外付けのDAコンバータ(MCP4922)に転送して演奏しています。 DMA転送は RAMに読み込まれたデータをSPIのバッファーに書き込む部分で行われています。
   

<仕様>  
SDカードにあるWAVファイルを再生するプレーヤーをPIC32MZを用いて製作すること
再生対象のWAVファイルは、ステレオ16ビット、44.1KHzのみとする。
SPIモジュールのSPI4を用いて12ビットDAコンバータMCP4922にLチャンネルのデータのみのデータを転送、再生すること
WAVファイルの読み出し、DAコンバータへの書き出しは以下のような”ダブルバッファ方式”とすること
➀SDカードの読み出しは SPI6とし、サウンドデータ読み出しのバッファは2個(仮称 バッファーA, バッファーB)とし、交互にデータを読みこむこと。
➁バッファA、バッファBから44.1KHz毎にSPI4のバッファに書き出す
③バッファAへの読み込みはバッファAからSPI4への書き込みが完了した後に行う。 同様にバッファBへの読み込みはバッファBからSPI4への書き込みが完了した後に行う。
バッファA、及びバッファーBからSPI4への書き込みはDMA転送を用いること
WAVファイルを再生/停止のボタンスイッチをもうけること 
演奏曲を演奏中でもスキップできるボタンスイッチをもうけること。SDカード内のすべてのWAVファイルを再生したら最初のファイルに戻ること
キャラクタ液晶に演奏中のWAVファイルのファイル名を表示すること
  SDカード脱着、ファイルオープン失敗、ダブルバッファ動作状態に係るLED表示を行うこと
(コンデンサを追加しないとスピーカアンプの入力に直流が印加されてしまいます。必ず挿入してから通電してください)
DAコンバータMCP4922の出力とアンプの間に 100μFのコンデンサを挿入すること
 (参考)以下の写真はRCAコネクタの信号部分に SMCの3216(L3.2 x W1.6 x H1.6mm) 6v 100μFの積層セラミックコンデンサをハンダ付けしたものです。
       
     
     
<回路図> ( → PDF)
   
       
       
<外観>PIC32MZ評価ボード(→購入方法)を使った実験品の外観です。
     汎用モジュール評価ボード(段積みボード)には本テーマと関係ない部品が多々実装されています。
 
標準SD
専用
 
マイクロSD
実験時
 
     
     
  <動作結果> (→ サウンド付き動画
           
   
    
 
  押しボタンスイッチ  機能動作 備考 
   スタート/ストップ  WAVファイルの演奏を開始する/停止する  
   スキップ  現在演奏中の曲を停止して、次の曲の演奏を開始する。  
   リセット  プログラム書き込み後 or 電源投入後リセットボタンをクリックしてプログラムを動作させる RB1の変化割り込みを追加すると 電源ON後リセットしないとPIC32MZが起動しない現象が発生。 バグ?
   
   演奏中のファイル名の表示結果("エデンの東"を演奏中の場合):
 上段が演奏中のファイル名です
   
   
   







   
<解説> プロジェクトファイルを精読願います